package com.yunxi.sto.service;

import com.github.pagehelper.PageInfo;
import com.yunxi.sto.pojo.*;
import com.yunxi.vehicle.pojo.VehicleCatalogListVO;
import com.yunxi.vehicle.pojo.VehicleSeriesListVO;
import com.yunxi.vip.pojo.StoVehicleExpVO;
import java.lang.reflect.InvocationTargetException;
import java.util.List;

/**
 * <p>
 * 经销商车辆库存 服务类
 * </p>
 *
 * @author caoYong
 * @since 2019-05-29
 */
public interface VehicleStockDubboService {

    VehicleStockVO getById(String id) throws InvocationTargetException, IllegalAccessException;

    void saveOrUpdate(VehicleStockVO vehicleStockVO) throws InvocationTargetException, IllegalAccessException;

    void removeById(String id);

    PageInfo<VehicleStockQueryVO> findPageByVO(VehicleStockQueryVO vehicleStockQueryVO, Integer pageNum, Integer pageSize) throws InvocationTargetException, IllegalAccessException;

    void removeByListVo(List<VehicleStockVO> vehicleStockVOList) throws IllegalAccessException, InvocationTargetException, InstantiationException;

    void frozenAndReset(List<VehicleStockFrozenVO> list, String isFrozen, Integer forzenReasonKey, String userId) throws Exception;

    void repairInOut(List<String> list, Integer isRepairOut) throws Exception;

    VehicleStockVO findByVehicleId(String vehicleId)throws InvocationTargetException, IllegalAccessException;

    PageInfo<VehicleStockQueryVO> findMaintainPageByVO(VehicleStockQueryVO vehicleStockQueryVO, Integer pageNum, Integer pageSize) throws InvocationTargetException, IllegalAccessException;

    List<VehicleStockMaintainVO> mainTainExport(VehicleStockQueryVO vehicleStockQueryVO) throws InvocationTargetException, IllegalAccessException;

    List<VehicleStockQueryVO> export(VehicleStockQueryVO vehicleStockQueryVO) throws Exception;

    List<VehicleSeriesListVO> seriesList()throws Exception;

    List<VehicleCatalogListVO> catalogList()throws Exception;

    void importFrozen(VehicleStockImportVO vehicleStockImportVO, String updateBy)throws Exception;

    PageInfo<VehicleStockQueryVO> sharePage(VehicleStockQueryVO vehicleStockQueryVO,Integer pageNum,Integer pageSize)throws Exception;

    PageInfo<VehicleStockQueryVO> newSharePage(VehicleStockQueryVO vehicleStockQueryVO,Integer pageNum,Integer pageSize)throws Exception;

    PageInfo<VehicleStockQueryVO> financePage(VehicleStockQueryVO vehicleStockQueryVO,Integer pageNum,Integer pageSize)throws Exception;

    PageInfo<VehicleStockQueryVO> shareList(VehicleStockQueryVO vehicleStockQueryVO, Integer pageNum, Integer pageSize)throws Exception;

    void setShare(List<String> list,String userCode,Integer isAdd)throws Exception;

    /**
     * 取消共享车
     * @param vin
     * @throws Exception
     */
    void cancelShare(String vin)throws Exception;

    void putVehicle(StoVehicleExpVO stoVehicleExpVO, int i);

    List<VehicleStockFrozenListVO> exportFrozenList()throws Exception;

    List<VehicleStockReportVO> stockReport(VehicleStockReportVO vehicleStockReportVO)throws Exception;

    List<VehicleStockReportDetailVO> stockReportDetail(VehicleStockReportDetailVO vehicleStockReportDetailVO)throws Exception;

    void vehicleBind(VehicleStockBindVO vehicleStockBindVO)throws Exception;

    void testDriveOut(VehicleStockBindVO vehicleStockBindVO)throws Exception;

    List<VehicleStockQueryVO> findMaintainList(VehicleStockQueryVO vehicleStockQueryVO)throws Exception;
 }
